package main

import (
	"fmt"
	"unsafe"
)

func main() {
	/*
		float32 4byte
		float64 8byte
	*/

	// 1.以十进制的形式进行显示
	var floatVariable1 = 3.1415926
	var floatVariable2 float32 = 3.1415926
	fmt.Printf("floatVariable1的类型=%T，占用的字节大小=%d\n", floatVariable1, unsafe.Sizeof(floatVariable1))
	// floatVariable1的类型=float64，占用的字节大小=8
	fmt.Printf("floatVariable2的类型=%T，占用的字节大小=%d\n", floatVariable2, unsafe.Sizeof(floatVariable1))
	// floatVariable2的类型=float32，占用的字节大小=4
	// 默认是float64，更加精准的那个

	floatVariable3 := .1415926
	fmt.Println(floatVariable3) // 0.1415926

	// 2.以科学计数法的形式进行显示
	floatVariable4 := 3.1415926e2 // 表示 3.1415926 乘以 10的二次方
	fmt.Println(floatVariable4)   // 314.15926

	floatVariable5 := 3.1415926e-2 // 表示 3.1415926 乘以 10的负二次方
	fmt.Println(floatVariable5)    // 0.031415926

	// 类型转换
	var floatVariable6 float32 = 3.14
	var floatVariable7 float64 = 3.14
	// cannot use floatVariable7 (variable of type float64) as float32 value in assignment
	// floatVariable6 = floatVariable7
	// 强转，但大类型转小类型会溢出
	floatVariable7 = float64(floatVariable6)
	fmt.Println(unsafe.Sizeof(floatVariable7))
	// 如果一个变量暂时不使用，可以将它赋值回去
	// floatVariable7 = floatVariable7
}
